package com.itheima.edu.day21Thread;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class MyCallableAndFutureDemo {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        //线程启动后，调用对象里面的call方法
        MyCallable mc = new MyCallable();
        //利用FureTask作为中间媒介，泛型的类型表示返回值的类型
        FutureTask<String> ft = new FutureTask<>(mc);
        //接受参数，因为FutureTask也继承了Runnable，所以创建Thread对象时，可以传入它的对象作为参数
        Thread th1 = new Thread(ft);
        th1.start();
        //注意！get方法可以得到call方法的返回值！但是它不能写在start方法的上面
        String s = ft.get();
        System.out.println(s);
    }
}
